package br.senai.sc.web.util;

import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;

import net.sf.jmimemagic.Magic;
import net.sf.jmimemagic.MagicMatch;

import org.primefaces.model.UploadedFile;

import br.senai.sc.model.Anexo;
import br.senai.sc.model.Foto;

public final class WebUtils {

    private WebUtils() {}

    /**
     * Cria uma entidade {@link Foto} a partir de um {@link UploadedFile} informado.
     * 
     * @param uploadedFile
     */
    public static Foto createFoto(UploadedFile uploadedFile) {

        Foto foto = new Foto();
        Anexo anexo = new Anexo();

        byte[] conteudo = uploadedFile.getContents();
        anexo.setTamanho(uploadedFile.getSize());
        anexo.setNome(uploadedFile.getFileName());
        anexo.setArquivo(conteudo);

        try {
            MagicMatch match;
            match = Magic.getMagicMatch(conteudo);
            anexo.setMimeType(match.getMimeType());
            BufferedImage bimage = ImageIO.read(uploadedFile.getInputstream());

            foto.setAnexo(anexo);
            foto.setLargura(bimage.getWidth());
            foto.setAltura(bimage.getHeight());
        } catch (Exception e) {
            // TODO Task: Tratar exceções de sistema
        }

        // TODO gerar thumbs da foto
        //    foto.setThumb()

        return foto;
    }
}
